Progressionで起きたメモリリーク
- 2009 年 4月 21 日
現バージョンのProgressionではメモリー関連の問題がある模様。この点はフォーラムで開発者のniumさま自身も何度かコメント(こことか、こことか)されています。
関係あるかどうかはいざ知らずともAS3で何かとやっかいなメモリリーク。
自分がやってしまったことの記録です。
トラブルはコマンドをダイナミックに作り続けてたらメモリが一杯になった。
以下は確認用です。最近話題のSWFProfilerで確認。SWFProfilerの文字を右クリックしてSWFProfilerを表示して移動ボタンを押すと…その度に使用メモリが増え続ける…。
やってることは、ボタン押す度に以下のtween()を実行しています。
50回上書きしているから当たり前に問題もあるのだけれど比較用にそうしています。元々上書きでなく50個のコマンドをダイナミックに作って気づいたところなので、上書きせずとも発生する模様。
private var d:Number = 0; public function tween():void{ this.d ^= 1; var _x:Number = 100 + 600 * d; for(var i=0; i<50; i++){ new DoTweener( this.square, { x:_x, transition:"easeOutExpo", time:1 } ).execute(); } } |
DoTweenerのところをTweenerに置き換えてみると、このメモリリークは発生しない様子。微妙に増え続けているので正確にはなんともわからんのだけれど。
private var d:Number = 0; public function tween():void{ this.d ^= 1; var _x:Number = 100 + 600 * d; for(var i=0; i<50; i++){ Tweener.addTween( this.square, { x:_x, transition:"easeOutExpo", time:1 } ); } } |